/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.DAO;

import br.com.documentar.interfacee.InterfaceDAO;
import br.com.documentar.model.AssociarTabelaVersaoModel;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author Santos
 */
public class AssociarTabelaVersaoDAO extends AbstractDAO implements InterfaceDAO<List<AssociarTabelaVersaoModel>, AssociarTabelaVersaoModel> {

    @Override
    public boolean setDados(AssociarTabelaVersaoModel model) {
        String sql = null;
        ConnectDataBase();
        switch (model.getActionScript()) {
            case "I":
                sql = "INSERT INTO \n"
                        + "  `tlnk_tabela_versao`\n"
                        + "(\n"
                        + "  `TLNK_TABELA_FK_PK`,\n"
                        + "  `TLNK_VERSAO_FK_PK`,\n"
                        + "  `TLNK_TABLESPACE`,\n"
                        + "  `TLNK_TEMPORARIA`,\n"
                        + "  `TLNK_DONO`,\n"
                        + "  `TLNK_ACAO`,\n"
                        + "  `TLNK_ATIVO`,\n"
                        + "  `TLNK_TIPO_BANCO`,\n"
                        + "  `TLNK_SQL`,\n"
                        + "  `TLNK_NOME_BANCO_DADOS`) \n"
                        + "VALUE (\n"
                        + "  " + model.getTabela().getCodigo() + ",\n"
                        + "  " + model.getVersao().getCodigo() + ",\n"
                        + "  '" + model.getTableSpace() + "',\n"
                        + "  '" + model.getTemporaria() + "',\n"
                        + "  '" + model.getDono() + "',\n"
                        + "  '" + model.getAcao() + "',\n"
                        + "  '" + model.getAtivo() + "',"
                        + "  '" + model.getTipoBanco() + "',"
                        + "  '" + model.getSql() + "',"
                        + "  '" + model.getNomeBanco() + "')";
                break;
            case "U":
                sql = "UPDATE \n"
                        + "  `tlnk_tabela_versao`  \n"
                        + "SET \n"
                        + "  `TLNK_TABLESPACE` = '" + model.getTableSpace() + "',\n"
                        + "  `TLNK_TEMPORARIA` = '" + model.getTemporaria() + "',\n"
                        + "  `TLNK_DONO` = '" + model.getDono() + "',\n"
                        + "  `TLNK_ACAO` = '" + model.getAcao() + "',\n"
                        + "  `TLNK_ATIVO` = '" + model.getAtivo() + "', \n"
                        + "  `TLNK_TIPO_BANCO` = '" + model.getTipoBanco() + "', \n"
                        + "  `TLNK_SQL` = '" + model.getSql() + "', \n"
                        + "  `TLNK_NOME_BANCO_DADOS` = '" + model.getNomeBanco() + "' \n"
                        + "WHERE \n"
                        + "  `TLNK_TABELA_FK_PK` = " + model.getTabela().getCodigo() + " AND \n"
                        + "  `TLNK_VERSAO_FK_PK` = " + model.getVersao().getCodigo() + "";
                break;
            case "D":
                sql = "DELETE FROM \n"
                        + "  `tlnk_tabela_versao` \n"
                        + "WHERE \n"
                        + "  `TLNK_TABELA_FK_PK` = " + model.getTabela().getCodigo() + " AND \n"
                        + "  `TLNK_VERSAO_FK_PK` = " + model.getVersao().getCodigo() + "";
                break;
        }
        return InsertUpdateDelete(sql, model.getNomeTela());
    }

    @Override
    public List<AssociarTabelaVersaoModel> getDados(AssociarTabelaVersaoModel model) {
        model.setResultSet(null);
        model.getListaTabelaVersao().clear();
        String sql = "SELECT \n"
                + " `produto`.`TPRO_CODIGO_PK`,\n"
                + " `produto`.`TPRO_NOME`,\n"
                + " `tabela`.`TTAB_CODIGO_PK`,\n"
                + " `tabela`.`TTAB_NOME`,\n"
                + " `versao`.`TVER_CODIGO_PK`,\n"
                + " `versao`.`TVER_NOME`,\n"
                + " `tabelaVersao`.`TLNK_TABLESPACE`,\n"
                + " `tabelaVersao`.`TLNK_TEMPORARIA`,\n"
                + " `tabelaVersao`.`TLNK_DONO`,\n"
                + " `tabelaVersao`.`TLNK_ACAO`,\n"
                + " `tabelaVersao`.`TLNK_ATIVO`,\n"
                + " `tabelaVersao`.`TLNK_TIPO_BANCO`,\n"
                + " `tabelaVersao`.`TLNK_NOME_BANCO_DADOS`,\n"
                + " `tabelaVersao`.`TLNK_SQL`\n"
                + " FROM \n"
                + "  `tlnk_tabela_versao` `tabelaVersao`\n"
                + " INNER JOIN `ttab_tabela` `tabela` \n"
                + "	on `tabelaVersao`.`TLNK_TABELA_FK_PK` = `tabela`.`TTAB_CODIGO_PK`  \n"
                + " INNER JOIN `tpro_produto` `produto` \n"
                + "	on `tabela`.`TTAB_PRODUTO_FK` = `produto`.`TPRO_CODIGO_PK`\n"
                + " INNER JOIN `tver_versao` versao \n"
                + "	on `tabelaVersao`.`TLNK_VERSAO_FK_PK` = `versao`.`TVER_CODIGO_PK` ";
        try {
            ConnectDataBase();
            switch (model.getActionScript()) {
                case "C":
                    model.setResultSet(Select(sql, model.getNomeTela()));
                    break;
                case "P":
                    //model.setResultSet(Select(sql + " where `tabela`.`TTAB_NOME` like '%" + model.getNome() + "%'"));
                    break;
                case "porProduto":
                    model.setResultSet(Select(sql + "   where `tabela`.`TTAB_PRODUTO_FK` = " + model.getProduto().getCodigo() + "", model.getNomeTela()));
                    break;
                case "porTabelaVersao":
                    model.setResultSet(Select(sql + "   where `tabelaVersao`.`TLNK_VERSAO_FK_PK` = " + model.getVersao().getCodigo() + "\n "
                            + " and `tabelaVersao`.`TLNK_TABELA_FK_PK` = " + model.getTabela().getCodigo() + " ", model.getNomeTela()));
                    break;
            }
            while (model.getResultSet().next()) {
                br.com.documentar.model.AssociarTabelaVersaoModel p = new br.com.documentar.model.AssociarTabelaVersaoModel();
                p.getProduto().setCodigo(rs.getInt("TPRO_CODIGO_PK"));
                p.getProduto().setNome(rs.getString("TPRO_NOME"));
                p.getTabela().setCodigo(rs.getInt("TTAB_CODIGO_PK"));
                p.getTabela().setNome(rs.getString("TTAB_NOME"));
                p.getVersao().setCodigo(rs.getInt("TVER_CODIGO_PK"));
                p.getVersao().setNome(rs.getString("TVER_NOME"));

                p.setTableSpace(rs.getString("TLNK_TABLESPACE"));
                p.setTemporaria(rs.getString("TLNK_TEMPORARIA").charAt(0));
                p.setDono(rs.getString("TLNK_DONO"));
                p.setAcao(rs.getString("TLNK_ACAO").charAt(0));
                p.setAtivo(rs.getString("TLNK_ATIVO").charAt(0));
                p.setTipoBanco(rs.getString("TLNK_TIPO_BANCO"));
                p.setNomeBanco(rs.getString("TLNK_NOME_BANCO_DADOS"));
                p.setSql(rs.getString("TLNK_SQL"));

                model.getListaTabelaVersao().add(p);
            }
        } catch (SQLException ex) {
            ex.getStackTrace();
        } finally {
            Desconectar(model.getNomeTela());
        }
        return model.getListaTabelaVersao();
    }
}
